// vite.config.js
import { fileURLToPath, URL } from "node:url";
import { createHtmlPlugin } from "file:///E:/Desktop/vue3_template/node_modules/vite-plugin-html/dist/index.mjs";
import { defineConfig, loadEnv } from "file:///E:/Desktop/vue3_template/node_modules/vite/dist/node/index.js";
import vue from "file:///E:/Desktop/vue3_template/node_modules/@vitejs/plugin-vue/dist/index.mjs";
import { visualizer } from "file:///E:/Desktop/vue3_template/node_modules/rollup-plugin-visualizer/dist/plugin/index.js";
import { createSvgIconsPlugin } from "file:///E:/Desktop/vue3_template/node_modules/vite-plugin-svg-icons/dist/index.mjs";
import viteCompression from "file:///E:/Desktop/vue3_template/node_modules/vite-plugin-compression/dist/index.mjs";

// plugin/build-zip.js
import path from "path";
import fs from "fs";
import JSZip from "file:///E:/Desktop/vue3_template/node_modules/jszip/lib/index.js";
var __vite_injected_original_dirname = "E:\\Desktop\\vue3_template\\plugin";
var plugin = function(fileName = "dist", output) {
  if (!output)
    output = path.resolve(__vite_injected_original_dirname, `../${fileName}`);
  fileName += ".zip";
  const makeZip = function() {
    const zip = new JSZip();
    const distPath = path.resolve(output);
    const readDir = function(zip2, dirPath) {
      const files = fs.readdirSync(dirPath);
      files.forEach((fileName2) => {
        const fillPath = path.join(dirPath, "./", fileName2);
        const file = fs.statSync(fillPath);
        if (file.isDirectory()) {
          const dirZip = zip2.folder(fileName2);
          readDir(dirZip, fillPath);
        } else {
          zip2.file(fileName2, fs.readFileSync(fillPath));
        }
      });
    };
    const removeExistedZip = () => {
      const dest = path.join(distPath, `./${fileName}`);
      if (fs.existsSync(dest)) {
        fs.unlinkSync(dest);
      }
    };
    const zipDir = function() {
      readDir(zip, distPath);
      zip.generateAsync({
        type: "nodebuffer",
        // 压缩类型
        compression: "DEFLATE",
        // 压缩算法
        compressionOptions: {
          // 压缩级别
          level: 9
        }
      }).then((content) => {
        const dest = path.join(distPath, `../${fileName}`);
        removeExistedZip();
        fs.writeFileSync(dest, content);
      });
    };
    removeExistedZip();
    zipDir(distPath);
  };
  return {
    name: "vite-plugin-auto-zip",
    apply: "build",
    closeBundle() {
      makeZip();
    }
  };
};

// vite.config.js
import AutoImport from "file:///E:/Desktop/vue3_template/node_modules/unplugin-auto-import/dist/vite.js";
import Components from "file:///E:/Desktop/vue3_template/node_modules/unplugin-vue-components/dist/vite.js";
import { ElementPlusResolver } from "file:///E:/Desktop/vue3_template/node_modules/unplugin-vue-components/dist/resolvers.js";
var __vite_injected_original_import_meta_url = "file:///E:/Desktop/vue3_template/vite.config.js";
var getViteEnv = (mode, target) => {
  return loadEnv(mode, process.cwd())[target];
};
var root = process.cwd();
var vite_config_default = defineConfig(({ command, mode }) => {
  let env = null;
  const isBuild = command === "build";
  if (isBuild) {
    env = loadEnv(process.argv[3] === "--mode" ? process.argv[4] : process.argv[3], root);
  } else {
    env = loadEnv(mode, root);
  }
  return {
    plugins: [
      createHtmlPlugin({
        inject: {
          data: {
            title: getViteEnv(mode, "VITE_TITLE")
          }
        }
      }),
      vue(),
      visualizer(),
      createSvgIconsPlugin({
        // 指定要缓存的图标文件夹
        iconDirs: [fileURLToPath(new URL("./src/assets/svg", __vite_injected_original_import_meta_url))],
        // 执行icon name的格式
        symbolId: "icon-[name]"
      }),
      plugin(getViteEnv(mode, "VITE_BUILD_FILLNAME")),
      viteCompression({
        threshold: 1024 * 500,
        // 对大于500kb的文件进行压缩
        algorithm: "gzip",
        // 采用的压缩算法，默认是 gzip
        ext: ".gz"
        // 生成的压缩包后缀
      }),
      AutoImport({
        resolvers: [ElementPlusResolver()]
      }),
      Components({
        resolvers: [ElementPlusResolver()]
      })
    ],
    resolve: {
      alias: {
        "@": fileURLToPath(new URL("./src", __vite_injected_original_import_meta_url)),
        "@views": fileURLToPath(new URL("./src/views", __vite_injected_original_import_meta_url)),
        "@img": fileURLToPath(new URL("./src/assets/images", __vite_injected_original_import_meta_url)),
        "@com": fileURLToPath(new URL("./src/components", __vite_injected_original_import_meta_url))
      },
      extensions: [".vue", ".mjs", ".js", ".json", ".node", ".scss"]
    },
    base: "/",
    server: {
      host: "0.0.0.0",
      port: 10,
      open: true
    },
    build: {
      outDir: getViteEnv(mode, "VITE_BUILD_FILLNAME"),
      rollupOptions: {
        output: {
          entryFileNames: "js/[name]-[hash].js",
          chunkFileNames: "js/[name]-[hash].js",
          assetFileNames(assetInfo) {
            if (assetInfo.name.endsWith(".css")) {
              return "css/[name]-[hash].css";
            }
            const imgExts = [".png", ".jpg", ".jpeg", ".svg", ".gif", ".ico", ".webp"];
            if (imgExts.some((ext) => assetInfo.name.endsWith(ext))) {
              return "image/[name]-[hash][ext]";
            }
            return "assets/[name]-[hash][ext]";
          }
        }
      },
      terserOptions: {
        minify: "esbuild",
        compress: {
          //生产环境时移除console
          drop_console: true,
          drop_debugger: true
        }
      },
      esbuild: {
        drop: env.VITE_DELETE_SIGN == "true" ? ["console", "debugger"] : []
      }
    }
  };
});
export {
  vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiLCAicGx1Z2luL2J1aWxkLXppcC5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkU6XFxcXERlc2t0b3BcXFxcdnVlM190ZW1wbGF0ZVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRTpcXFxcRGVza3RvcFxcXFx2dWUzX3RlbXBsYXRlXFxcXHZpdGUuY29uZmlnLmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9FOi9EZXNrdG9wL3Z1ZTNfdGVtcGxhdGUvdml0ZS5jb25maWcuanNcIjtpbXBvcnQgeyBmaWxlVVJMVG9QYXRoLCBVUkwgfSBmcm9tICdub2RlOnVybCdcbmltcG9ydCB7IGNyZWF0ZUh0bWxQbHVnaW4gfSBmcm9tICd2aXRlLXBsdWdpbi1odG1sJ1xuaW1wb3J0IHsgZGVmaW5lQ29uZmlnLCBsb2FkRW52IH0gZnJvbSAndml0ZSdcbmltcG9ydCB2dWUgZnJvbSAnQHZpdGVqcy9wbHVnaW4tdnVlJ1xuaW1wb3J0IHsgdmlzdWFsaXplciB9IGZyb20gJ3JvbGx1cC1wbHVnaW4tdmlzdWFsaXplcidcblxuaW1wb3J0IHsgY3JlYXRlU3ZnSWNvbnNQbHVnaW4gfSBmcm9tICd2aXRlLXBsdWdpbi1zdmctaWNvbnMnXG5pbXBvcnQgdml0ZUNvbXByZXNzaW9uIGZyb20gJ3ZpdGUtcGx1Z2luLWNvbXByZXNzaW9uJ1xuaW1wb3J0IHsgcGx1Z2luIGFzIGJ1aWxkWmlwIH0gZnJvbSAnLi9wbHVnaW4vYnVpbGQtemlwLmpzJ1xuXG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tICd1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlJ1xuaW1wb3J0IENvbXBvbmVudHMgZnJvbSAndW5wbHVnaW4tdnVlLWNvbXBvbmVudHMvdml0ZSdcbmltcG9ydCB7IEVsZW1lbnRQbHVzUmVzb2x2ZXIgfSBmcm9tICd1bnBsdWdpbi12dWUtY29tcG9uZW50cy9yZXNvbHZlcnMnXG5cblxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcblxuXG5jb25zdCBnZXRWaXRlRW52ID0gKG1vZGUsIHRhcmdldCkgPT4ge1xuICByZXR1cm4gbG9hZEVudihtb2RlLCBwcm9jZXNzLmN3ZCgpKVt0YXJnZXRdXG59XG5jb25zdCByb290ID0gcHJvY2Vzcy5jd2QoKVxuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoKHsgY29tbWFuZCwgbW9kZSB9KSA9PiB7XG4gIGxldCBlbnYgPSBudWxsXG4gIGNvbnN0IGlzQnVpbGQgPSBjb21tYW5kID09PSAnYnVpbGQnXG5cbiAgaWYgKGlzQnVpbGQpIHtcbiAgICBlbnYgPSBsb2FkRW52KHByb2Nlc3MuYXJndlszXSA9PT0gJy0tbW9kZScgPyBwcm9jZXNzLmFyZ3ZbNF0gOiBwcm9jZXNzLmFyZ3ZbM10sIHJvb3QpXG4gIH0gZWxzZSB7XG4gICAgZW52ID0gbG9hZEVudihtb2RlLCByb290KVxuICB9XG4gIHJldHVybiB7XG4gICAgcGx1Z2luczogW1xuICAgICAgY3JlYXRlSHRtbFBsdWdpbih7XG4gICAgICAgIGluamVjdDoge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRpdGxlOiBnZXRWaXRlRW52KG1vZGUsICdWSVRFX1RJVExFJylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLFxuXG4gICAgICB2dWUoKSxcbiAgICAgIHZpc3VhbGl6ZXIoKSxcbiAgICAgIGNyZWF0ZVN2Z0ljb25zUGx1Z2luKHtcbiAgICAgICAgLy8gXHU2MzA3XHU1QjlBXHU4OTgxXHU3RjEzXHU1QjU4XHU3Njg0XHU1NkZFXHU2ODA3XHU2NTg3XHU0RUY2XHU1OTM5XG4gICAgICAgIGljb25EaXJzOiBbZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuL3NyYy9hc3NldHMvc3ZnJywgaW1wb3J0Lm1ldGEudXJsKSldLFxuICAgICAgICAvLyBcdTYyNjdcdTg4NENpY29uIG5hbWVcdTc2ODRcdTY4M0NcdTVGMEZcbiAgICAgICAgc3ltYm9sSWQ6ICdpY29uLVtuYW1lXSdcbiAgICAgIH0pLFxuICAgICAgYnVpbGRaaXAoZ2V0Vml0ZUVudihtb2RlLCAnVklURV9CVUlMRF9GSUxMTkFNRScpKSxcbiAgICAgIHZpdGVDb21wcmVzc2lvbih7XG4gICAgICAgIHRocmVzaG9sZDogMTAyNCAqIDUwMCwgLy8gXHU1QkY5XHU1OTI3XHU0RThFNTAwa2JcdTc2ODRcdTY1ODdcdTRFRjZcdThGREJcdTg4NENcdTUzOEJcdTdGMjlcbiAgICAgICAgYWxnb3JpdGhtOiAnZ3ppcCcsIC8vIFx1OTFDN1x1NzUyOFx1NzY4NFx1NTM4Qlx1N0YyOVx1N0I5N1x1NkNENVx1RkYwQ1x1OUVEOFx1OEJBNFx1NjYyRiBnemlwXG4gICAgICAgIGV4dDogJy5neicgLy8gXHU3NTFGXHU2MjEwXHU3Njg0XHU1MzhCXHU3RjI5XHU1MzA1XHU1NDBFXHU3RjAwXG4gICAgICB9KSxcbiAgICAgIEF1dG9JbXBvcnQoe1xuICAgICAgICByZXNvbHZlcnM6IFtFbGVtZW50UGx1c1Jlc29sdmVyKCldLFxuICAgICAgfSksXG4gICAgICBDb21wb25lbnRzKHtcbiAgICAgICAgcmVzb2x2ZXJzOiBbRWxlbWVudFBsdXNSZXNvbHZlcigpXSxcbiAgICAgIH0pLFxuICAgIF0sXG4gICAgcmVzb2x2ZToge1xuICAgICAgYWxpYXM6IHtcbiAgICAgICAgJ0AnOiBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4vc3JjJywgaW1wb3J0Lm1ldGEudXJsKSksXG4gICAgICAgICdAdmlld3MnOiBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4vc3JjL3ZpZXdzJywgaW1wb3J0Lm1ldGEudXJsKSksXG4gICAgICAgICdAaW1nJzogZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuL3NyYy9hc3NldHMvaW1hZ2VzJywgaW1wb3J0Lm1ldGEudXJsKSksXG4gICAgICAgICdAY29tJzogZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuL3NyYy9jb21wb25lbnRzJywgaW1wb3J0Lm1ldGEudXJsKSlcbiAgICAgIH0sXG4gICAgICBleHRlbnNpb25zOiBbJy52dWUnLCAnLm1qcycsICcuanMnLCAnLmpzb24nLCAnLm5vZGUnLCAnLnNjc3MnXVxuICAgIH0sXG4gICAgYmFzZTogJy8nLFxuICAgIHNlcnZlcjoge1xuICAgICAgaG9zdDogJzAuMC4wLjAnLFxuICAgICAgcG9ydDogMTAsXG4gICAgICBvcGVuOiB0cnVlXG4gICAgfSxcbiAgICBidWlsZDoge1xuICAgICAgb3V0RGlyOiBnZXRWaXRlRW52KG1vZGUsICdWSVRFX0JVSUxEX0ZJTExOQU1FJyksXG4gICAgICByb2xsdXBPcHRpb25zOiB7XG4gICAgICAgIG91dHB1dDoge1xuICAgICAgICAgIGVudHJ5RmlsZU5hbWVzOiAnanMvW25hbWVdLVtoYXNoXS5qcycsXG4gICAgICAgICAgY2h1bmtGaWxlTmFtZXM6ICdqcy9bbmFtZV0tW2hhc2hdLmpzJyxcbiAgICAgICAgICBhc3NldEZpbGVOYW1lcyhhc3NldEluZm8pIHtcbiAgICAgICAgICAgIGlmIChhc3NldEluZm8ubmFtZS5lbmRzV2l0aCgnLmNzcycpKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnY3NzL1tuYW1lXS1baGFzaF0uY3NzJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaW1nRXh0cyA9IFsnLnBuZycsICcuanBnJywgJy5qcGVnJywgJy5zdmcnLCAnLmdpZicsICcuaWNvJywgJy53ZWJwJ11cbiAgICAgICAgICAgIGlmIChpbWdFeHRzLnNvbWUoKGV4dCkgPT4gYXNzZXRJbmZvLm5hbWUuZW5kc1dpdGgoZXh0KSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICdpbWFnZS9bbmFtZV0tW2hhc2hdW2V4dF0nXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAnYXNzZXRzL1tuYW1lXS1baGFzaF1bZXh0XSdcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0ZXJzZXJPcHRpb25zOiB7XG4gICAgICAgIG1pbmlmeTogJ2VzYnVpbGQnLFxuICAgICAgICBjb21wcmVzczoge1xuICAgICAgICAgIC8vXHU3NTFGXHU0RUE3XHU3M0FGXHU1ODgzXHU2NUY2XHU3OUZCXHU5NjY0Y29uc29sZVxuICAgICAgICAgIGRyb3BfY29uc29sZTogdHJ1ZSxcbiAgICAgICAgICBkcm9wX2RlYnVnZ2VyOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlc2J1aWxkOiB7XG4gICAgICAgIGRyb3A6IGVudi5WSVRFX0RFTEVURV9TSUdOID09ICd0cnVlJyA/IFsnY29uc29sZScsICdkZWJ1Z2dlciddIDogW11cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkU6XFxcXERlc2t0b3BcXFxcdnVlM190ZW1wbGF0ZVxcXFxwbHVnaW5cIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkU6XFxcXERlc2t0b3BcXFxcdnVlM190ZW1wbGF0ZVxcXFxwbHVnaW5cXFxcYnVpbGQtemlwLmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9FOi9EZXNrdG9wL3Z1ZTNfdGVtcGxhdGUvcGx1Z2luL2J1aWxkLXppcC5qc1wiO2ltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgZnMgZnJvbSAnZnMnXG5pbXBvcnQgSlNaaXAgZnJvbSAnanN6aXAnXG5leHBvcnQgY29uc3QgcGx1Z2luID0gZnVuY3Rpb24gKGZpbGVOYW1lID0gJ2Rpc3QnLCBvdXRwdXQpIHtcbiAgaWYgKCFvdXRwdXQpIG91dHB1dCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIGAuLi8ke2ZpbGVOYW1lfWApIC8vIC4vZGlzdFRlc3RcdTY2MkZcdTY4MzlcdTYzNkVcdTVCOUVcdTk2NDVcdThERUZcdTVGODRcdTgwMENcdTY3NjVcbiAgZmlsZU5hbWUgKz0gJy56aXAnXG4gIGNvbnN0IG1ha2VaaXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgemlwID0gbmV3IEpTWmlwKClcbiAgICBjb25zdCBkaXN0UGF0aCA9IHBhdGgucmVzb2x2ZShvdXRwdXQpXG4gICAgY29uc3QgcmVhZERpciA9IGZ1bmN0aW9uICh6aXAsIGRpclBhdGgpIHtcbiAgICAgIC8vIFx1OEJGQlx1NTNENmRpc3RcdTRFMEJcdTc2ODRcdTY4MzlcdTY1ODdcdTRFRjZcdTc2RUVcdTVGNTVcbiAgICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmMoZGlyUGF0aClcbiAgICAgIGZpbGVzLmZvckVhY2goKGZpbGVOYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGxQYXRoID0gcGF0aC5qb2luKGRpclBhdGgsICcuLycsIGZpbGVOYW1lKVxuICAgICAgICBjb25zdCBmaWxlID0gZnMuc3RhdFN5bmMoZmlsbFBhdGgpXG4gICAgICAgIC8vIFx1NTk4Mlx1Njc5Q1x1NjYyRlx1NjU4N1x1NEVGNlx1NTkzOVx1NzY4NFx1OEJERFx1OTcwMFx1ODk4MVx1OTAxMlx1NUY1Mlx1OTA0RFx1NTM4Nlx1NEUwQlx1OTc2Mlx1NzY4NFx1NUI1MFx1NjU4N1x1NEVGNlxuICAgICAgICBpZiAoZmlsZS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgY29uc3QgZGlyWmlwID0gemlwLmZvbGRlcihmaWxlTmFtZSlcbiAgICAgICAgICByZWFkRGlyKGRpclppcCwgZmlsbFBhdGgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gXHU4QkZCXHU1M0Q2XHU2QkNGXHU0RTJBXHU2NTg3XHU0RUY2XHU0RTNBYnVmZmVyXHU1QjU4XHU1MjMwemlwXHU0RTJEXG4gICAgICAgICAgemlwLmZpbGUoZmlsZU5hbWUsIGZzLnJlYWRGaWxlU3luYyhmaWxsUGF0aCkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIGNvbnN0IHJlbW92ZUV4aXN0ZWRaaXAgPSAoKSA9PiB7XG4gICAgICBjb25zdCBkZXN0ID0gcGF0aC5qb2luKGRpc3RQYXRoLCBgLi8ke2ZpbGVOYW1lfWApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhkZXN0KSkge1xuICAgICAgICBmcy51bmxpbmtTeW5jKGRlc3QpXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHppcERpciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlYWREaXIoemlwLCBkaXN0UGF0aClcbiAgICAgIHppcFxuICAgICAgICAuZ2VuZXJhdGVBc3luYyh7XG4gICAgICAgICAgdHlwZTogJ25vZGVidWZmZXInLCAvLyBcdTUzOEJcdTdGMjlcdTdDN0JcdTU3OEJcbiAgICAgICAgICBjb21wcmVzc2lvbjogJ0RFRkxBVEUnLCAvLyBcdTUzOEJcdTdGMjlcdTdCOTdcdTZDRDVcbiAgICAgICAgICBjb21wcmVzc2lvbk9wdGlvbnM6IHtcbiAgICAgICAgICAgIC8vIFx1NTM4Qlx1N0YyOVx1N0VBN1x1NTIyQlxuICAgICAgICAgICAgbGV2ZWw6IDlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKChjb250ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVzdCA9IHBhdGguam9pbihkaXN0UGF0aCwgYC4uLyR7ZmlsZU5hbWV9YClcbiAgICAgICAgICByZW1vdmVFeGlzdGVkWmlwKClcbiAgICAgICAgICAvLyBcdTYyOEF6aXBcdTUzMDVcdTUxOTlcdTUyMzBcdTc4NkNcdTc2RDhcdTRFMkRcdUZGMENcdThGRDlcdTRFMkFjb250ZW50XHU3M0IwXHU1NzI4XHU2NjJGXHU0RTAwXHU2QkI1YnVmZmVyXG4gICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhkZXN0LCBjb250ZW50KVxuICAgICAgICB9KVxuICAgIH1cbiAgICByZW1vdmVFeGlzdGVkWmlwKClcbiAgICB6aXBEaXIoZGlzdFBhdGgpXG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAndml0ZS1wbHVnaW4tYXV0by16aXAnLFxuICAgIGFwcGx5OiAnYnVpbGQnLFxuICAgIGNsb3NlQnVuZGxlKCkge1xuICAgICAgbWFrZVppcCgpXG4gICAgfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQWdRLFNBQVMsZUFBZSxXQUFXO0FBQ25TLFNBQVMsd0JBQXdCO0FBQ2pDLFNBQVMsY0FBYyxlQUFlO0FBQ3RDLE9BQU8sU0FBUztBQUNoQixTQUFTLGtCQUFrQjtBQUUzQixTQUFTLDRCQUE0QjtBQUNyQyxPQUFPLHFCQUFxQjs7O0FDUHVQLE9BQU8sVUFBVTtBQUNwUyxPQUFPLFFBQVE7QUFDZixPQUFPLFdBQVc7QUFGbEIsSUFBTSxtQ0FBbUM7QUFHbEMsSUFBTSxTQUFTLFNBQVUsV0FBVyxRQUFRLFFBQVE7QUFDekQsTUFBSSxDQUFDO0FBQVEsYUFBUyxLQUFLLFFBQVEsa0NBQVcsTUFBTSxRQUFRLEVBQUU7QUFDOUQsY0FBWTtBQUNaLFFBQU0sVUFBVSxXQUFZO0FBQzFCLFVBQU0sTUFBTSxJQUFJLE1BQU07QUFDdEIsVUFBTSxXQUFXLEtBQUssUUFBUSxNQUFNO0FBQ3BDLFVBQU0sVUFBVSxTQUFVQSxNQUFLLFNBQVM7QUFFdEMsWUFBTSxRQUFRLEdBQUcsWUFBWSxPQUFPO0FBQ3BDLFlBQU0sUUFBUSxDQUFDQyxjQUFhO0FBQzFCLGNBQU0sV0FBVyxLQUFLLEtBQUssU0FBUyxNQUFNQSxTQUFRO0FBQ2xELGNBQU0sT0FBTyxHQUFHLFNBQVMsUUFBUTtBQUVqQyxZQUFJLEtBQUssWUFBWSxHQUFHO0FBQ3RCLGdCQUFNLFNBQVNELEtBQUksT0FBT0MsU0FBUTtBQUNsQyxrQkFBUSxRQUFRLFFBQVE7QUFBQSxRQUMxQixPQUFPO0FBRUwsVUFBQUQsS0FBSSxLQUFLQyxXQUFVLEdBQUcsYUFBYSxRQUFRLENBQUM7QUFBQSxRQUM5QztBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFDQSxVQUFNLG1CQUFtQixNQUFNO0FBQzdCLFlBQU0sT0FBTyxLQUFLLEtBQUssVUFBVSxLQUFLLFFBQVEsRUFBRTtBQUNoRCxV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
